#pragma once
#include "event/mutex.hpp"
#include "event/abstractevent.hpp"
#include "event/abstractdelegate.hpp"
#include "msg/defaultstrategy.hpp"
using namespace JHCPP::msg;

namespace JHCPP
{
	namespace event
	{
		template <class TArgs, class TMutex = CMutex> 
		class TBasicEvent: public TAbstractEvent < 
			TArgs, TDefaultStrategy<TArgs, TAbstractDelegate<TArgs> >,
			TAbstractDelegate<TArgs>,
			TMutex
		>
		{
		public:
			TBasicEvent()
			{
			}

			~TBasicEvent()
			{
			}

		private:
			TBasicEvent(const TBasicEvent& e);
			TBasicEvent& operator = (const TBasicEvent& e);
		};

	}//end of namespace event
}//end of namespace JHCPP
